home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 0758 / setup.arv / MARKPROD.CTM < prev    next >
Encoding:
Text File  |  1997-04-10  |  5.2 KB  |  164 lines

  1. type
  2.         keyRec = record
  3.              key theKey : string;
  4.                  theVal : string;
  5.         endRecord
  6. endType
  7.  
  8. var
  9.         session : string = '';
  10.         targetFile : string = '';
  11.         itemID : string = '';
  12.         ARec : keyRec;
  13.         subs : table of keyRec;
  14.         items : table of keyRec;
  15.         prices : table of keyRec;
  16.         totalOrder : real = 0;
  17.         totalProducts : longint = 0;
  18.         totalWeight : real = 0;
  19.         subItems : longint = 0;
  20.         si : integer;
  21.         theSubItem : string;
  22.         theValue : longint;
  23.         oldProdNum : longint;
  24.         thePrice : real;
  25.         theWeight : real;
  26.         tempStr : string;
  27. endVar
  28.  
  29. function strToInt(s : string) : longint;
  30. var
  31.         r : real;
  32. endVar
  33.         val(s, r);
  34.         strToInt := r;
  35. endProc
  36.  
  37. function strToReal(s : string) : real;
  38. var
  39.         r : real;
  40. endVar
  41.         val(s, r);
  42.         strToReal := r;
  43. endProc
  44.  
  45. function intToStr(i : longint) : string;
  46. var
  47.         s : string;
  48. endVar
  49.         str(i : 0 : 0, s);
  50.         return s;
  51. endProc
  52.  
  53. function realToStr(r : real) : string;
  54. var
  55.         s : string;
  56. endVar
  57.         str(r : 0 : 2, s);
  58.         return s;
  59. endProc
  60.  
  61. procedure main
  62.         session := fieldParm('SessionID');
  63.         if ((session = '') or (session = '*SeSiOnId*'))
  64.                 printError;
  65.                 return;
  66.         endif
  67.         targetFile := cgiParm('Physical Path');
  68.         itemID := fieldParm('ItemID');
  69.         writeTitle('Catalog Maker Product Mark');
  70.         loadTable(subs, 'items.db');
  71.         loadTable(items, session);
  72.         loadTable(prices, 'prices.db');
  73.  
  74.         ARec.theKey := 'TotalOrder';
  75.         setKeysFromRecord(items, ARec);
  76.         if (readRecord(items, ARec))
  77.                 totalOrder := strToReal(ARec.theVal);
  78.         endif
  79.  
  80.         ARec.theKey := 'TotalProducts';
  81.         setKeysFromRecord(items, ARec);
  82.         if (readRecord(items, ARec))
  83.                 totalProducts := strToInt(ARec.theVal);
  84.         endif
  85.  
  86.         ARec.theKey := 'TotalWeight';
  87.         setKeysFromRecord(items, ARec);
  88.         if (readRecord(items, ARec))
  89.                 totalWeight := strToReal(ARec.theVal);
  90.         endif
  91.  
  92.         ARec.theKey := itemID;
  93.         setKeysFromRecord(subs, ARec);
  94.         if (readRecord(subs, ARec))
  95.                 subItems := strToInt(ARec.theVal);
  96.         endif
  97.         if (subItems <> 0) 
  98.                 for si := 1 to subItems
  99.                         theSubItem := itemID + intToStr(si);
  100.                         tempStr := fieldParm(theSubItem);
  101.                         theValue := strToInt(tempStr);
  102.                         ARec.theKey := theSubItem;
  103.                         setKeysFromRecord(items, ARec);
  104.                         if (readRecord(items, ARec))
  105.                                 oldProdNum := strToInt(ARec.theVal);
  106.                         else
  107.                                 oldProdNum := 0;
  108.                         endif
  109.                         totalProducts := totalProducts - oldProdNum + theValue;
  110.  
  111.                         ARec.theKey := theSubItem;
  112.                         setKeysFromRecord(prices, ARec);
  113.                         if (readRecord(prices, ARec))
  114.                                 thePrice := strToReal(ARec.theVal)
  115.                         else
  116.                                 thePrice := 0;
  117.                         endif
  118.                         totalOrder := totalOrder + ((theValue - oldProdNum) * thePrice);
  119.  
  120.                         ARec.theKey := theSubItem + 'W';
  121.                         setKeysFromRecord(prices, ARec);
  122.                         if (readRecord(prices, ARec))
  123.                                 theWeight := strToReal(ARec.theVal)
  124.                         else
  125.                                 theWeight := 0;
  126.                         endif
  127.                         totalWeight := totalWeight + ((theValue - oldProdNum) * theWeight);
  128.  
  129.                         ARec.theKey := theSubItem;
  130.                         ARec.theVal := intToStr(theValue);
  131.                         writeRecord(items, ARec);
  132.                 endFor
  133.         endif { there are sub items }
  134.  
  135.         ARec.theKey := 'TotalOrder';
  136.         ARec.theVal := realToStr(totalOrder);
  137.         writeRecord(items, ARec);
  138.  
  139.         ARec.theKey := 'TotalWeight';
  140.         ARec.theVal := realToStr(totalWeight);
  141.         writeRecord(items, ARec);
  142.  
  143.         ARec.theKey := 'TotalProducts';
  144.         ARec.theVal := intToStr(totalProducts);
  145.         writeRecord(items, ARec);
  146.  
  147.         saveTable(items, session);
  148.  
  149.         writeln('The products you specified were marked!');
  150.         writeln('So far you marked ', intToStr(totalProducts), 
  151.                          ' for a total of $', realToStr(totalOrder));
  152.         writeln('The total weight of the products you ordered is ',
  153.                         realToStr(totalWeight));
  154.         writeLink('continue', '/cgi-win/backeng.exe' + fieldParm('TargetPage') +
  155.                                '?SessionID=' + session + '&ItemID=' + itemID +
  156.                                '&ScriptName=' + fieldParm('TargetScript'));
  157.  
  158. endProc
  159.  
  160. procedure printError
  161.         writeTitle('Script Error');
  162.         writeln('Script executed with wrong parameters');
  163. endProc
  164.